package com.agenda.server.recebedores;

import java.io.DataOutputStream;
import java.io.ObjectInputStream;
import java.io.OutputStream;
import com.agenda.comum.ObjectRecebedorInformacao;
import com.agenda.controller.UsuarioController;
import com.agenda.model.RespostaRequisicao;
import com.agenda.model.Usuario;
import com.agenda.server.Servidor;
import com.agenda.server.listeners.UsuarioLogouListener;

public class LoginRecebedor extends ObjectRecebedorInformacao {

	private Boolean logou;
	private UsuarioLogouListener usuarioLogouListener;

	@Override
	public void receber(ObjectInputStream objectInput) throws Exception {
		Usuario usuario = (Usuario) objectInput.readObject();

		System.out.println("Usuario que chegou no servidor - " + usuario);

		try {
			logou = UsuarioController.getInstancia().efetuarLogin(usuario);

			if (logou) {
				Servidor.getInstancia().adicionarUsuarioOnLine(usuario, sck);
			}
			resposta = new RespostaRequisicao(false, "", true);

			if (usuarioLogouListener != null)
				usuarioLogouListener.setUsuario(usuario);

		} catch (Exception exception) {
			exception.printStackTrace();
			resposta = new RespostaRequisicao(true, exception.getMessage());
		}
	}

	protected void responder(OutputStream outputStream) throws Exception {
		new DataOutputStream(outputStream).writeBoolean(logou);
	}

	public void setUsuarioLogou(UsuarioLogouListener usuarioLogou) {
		this.usuarioLogouListener = usuarioLogou;
	};

}
